;(function() {
    var js_sel_address = $("#js-sel-address"),
    	js_fill_address = $("#js-fill-address"),
        js_province = $("#js-province"),
        js_city = $("#js-city"),
        js_district = $("#js-district");

    var first = []; /* 省，直辖市 */
    var second = []; /* 市 */
    var third = []; /* 镇 */

    var selectedIndex = [0, 0, 0]; /* 默认选中的地区 */

    var checked = [0, 0, 0]; /* 已选选项 */

    function creatList(obj, list) {
        obj.forEach(function(item, index, arr) {
            var temp = new Object();
            temp.text = item.name;
            temp.value = index;
            list.push(temp);
        })
    }

    creatList(city, first);

    if (city[selectedIndex[0]].hasOwnProperty('sub')) {
        creatList(city[selectedIndex[0]].sub, second);
    } else {
        second = [{ text: '', value: 0 }];
    }

    if (city[selectedIndex[0]].sub[selectedIndex[1]].hasOwnProperty('sub')) {
        creatList(city[selectedIndex[0]].sub[selectedIndex[1]].sub, third);
    } else {
        third = [{ text: '', value: 0 }];
    }

    var picker = new Picker({
        data: [first, second, third],
        selectedIndex: selectedIndex,
        title: '地址选择'
    });

    picker.on('picker.select', function(selectedVal, selectedIndex) {
        var text_province = first[selectedIndex[0]].text;
        var text_city = second[selectedIndex[1]].text;
        var text_district = third[selectedIndex[2]] ? third[selectedIndex[2]].text : '';

        js_province.val(text_province);
        js_city.val(text_city);
        js_district.val(text_district);
        js_fill_address.html(text_province + '' + text_city + '' + text_district);
    });

    picker.on('picker.change', function(index, selectedIndex) {
        console.log(index,selectedIndex);
        if (index === 0) {
            firstChange();
        } else if (index === 1) {
            secondChange();
        }

        function firstChange() {
            second = [];
            third = [];
            checked[0] = selectedIndex;
            var firstCity = city[selectedIndex];
            if (firstCity.hasOwnProperty('sub')) {
                creatList(firstCity.sub, second);

                var secondCity = city[selectedIndex].sub[0]
                if (secondCity.hasOwnProperty('sub')) {
                    creatList(secondCity.sub, third);
                } else {
                    third = [{ text: '', value: 0 }];
                    checked[2] = 0;
                }
            } else {
                second = [{ text: '', value: 0 }];
                third = [{ text: '', value: 0 }];
                checked[1] = 0;
                checked[2] = 0;
            }

            picker.refillColumn(1, second);
            picker.refillColumn(2, third);
            picker.scrollColumn(1, 0);
            picker.scrollColumn(2, 0);
        }

        function secondChange() {
            third = [];
            checked[1] = selectedIndex;
            var first_index = checked[0];
            if (city[first_index].sub[selectedIndex].hasOwnProperty('sub')) {
                var secondCity = city[first_index].sub[selectedIndex];
                creatList(secondCity.sub, third);
                picker.refillColumn(2, third);
                picker.scrollColumn(2, 0);
            } else {
                third = [{ text: '', value: 0 }];
                checked[2] = 0;
                picker.refillColumn(2, third);
                picker.scrollColumn(2, 0);
            }
        }

    });

    picker.on('picker.valuechange', function(selectedVal, selectedIndex) {
        console.log(selectedVal);
        console.log(selectedIndex);
    });

    js_sel_address.on('touchend', function() {
        $("input,textarea").blur();
        picker.show();
    });
})();